/**
 * 上海中赢金融信息服务有限公司
 * Copyright (c) 2017-2027 Chinazyjr,Inc.All Rights Reserved.
 */
package com.sys.midware.hbase.util;

import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;

import com.sys.midware.logger.Logger;
import com.sys.midware.logger.LoggerFactory;

/**
 * hbaseRowKey工具类 <b>ClassName：</b> HbaseRowKeyUtil <br/>
 * <b>Description：</b> TODO <br/>
 * <b>@author：</b> mobing <br/>
 * <b>@date：</b> 2015年10月26日 下午5:40:07 <br/>
 * <b>@version: </b> <br/>
 */
public class HbaseRowKeyUtil {

    private static final Logger logger = LoggerFactory.getLogger(HbaseRowKeyUtil.class);

    private static final byte[] ROWKEY_START_BYTE = new byte[16];

    static {
        for (int i = 0; i < ROWKEY_START_BYTE.length; i++) {
            ROWKEY_START_BYTE[i] = (byte) 0;
        }
    }

    private static final String ROWKEY_START_STRING = encodeHexString(getStartRowkeyAsByte());

    public static byte[] getStartRowkeyAsByte() {
        return ROWKEY_START_BYTE;
    }

    public static String getStartRowkeyAsString() {
        return ROWKEY_START_STRING;
    }

    public static byte[] md5(String str) {
        if (StringUtils.isBlank(str)) {
            return null;
        }
        return DigestUtils.md5(str);
    }

    public static String encodeHexString(byte[] md5) {
        return Hex.encodeHexString(md5);
    }

    public static String md5Hex(String str) {
        if (StringUtils.isBlank(str)) {
            return StringUtils.EMPTY;
        }
        return DigestUtils.md5Hex(str);
    }

    public static byte[] decodeHex(String rowKey) {
        if (StringUtils.isBlank(rowKey)) {
            return null;
        }
        try {
            return Hex.decodeHex(rowKey.toCharArray());
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        }

        return null;
    }

}
